cmake_minimum_required(VERSION 3.29.6)

project(cpp-primer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED on)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")

add_executable(cmake-recipe-01 cmake-cookbook/recipe-01/hello-world.cpp)
add_executable(reference-demo basic/reference.cpp)
add_executable(array-demo basic/array.cpp)
add_executable(swap-demo basic/swap.cpp)
add_executable(vector container/vector.cpp)
add_executable(array container/array.cpp)
add_executable(deque container/deque.cpp)
add_executable(set container/set.cpp)
add_executable(map container/map.cpp)
add_executable(alg algorithms/algorithms.cpp
        c++20/employee/employee.cpp)
add_executable(unique-demo smart-pointer/unique.cpp)
add_executable(share-demo smart-pointer/share.cpp)
add_executable(strBlob smart-pointer/strblob.cpp)
add_executable(enum-class c++20/enum-class.cpp)
add_executable(function-template template/function-template-demo.cpp)
add_executable(type-demo basic/type.cpp)
add_executable(auto basic/auto.cpp)
add_executable(decltype basic/decltype.cpp)
add_executable(move-demo basic/move.cpp)
add_executable(helloworld  c++20/helloworld.cpp)
